package com.event.management.backend.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 活动报表数据传输对象
 */
@Data
@ApiModel(value = "活动报表", description = "活动销售、报名、问卷数据统计")
public class EventReportDTO {
    
    @ApiModelProperty(value = "活动ID")
    private Long eventId;
    
    @ApiModelProperty(value = "活动标题")
    private String eventTitle;
    
    @ApiModelProperty(value = "总票数")
    private Integer totalTickets;
    
    @ApiModelProperty(value = "已售票数")
    private Integer soldTickets;
    
    @ApiModelProperty(value = "剩余票数")
    private Integer remainingTickets;
    
    @ApiModelProperty(value = "总收入")
    private BigDecimal totalRevenue;
    
    @ApiModelProperty(value = "问卷提交数量")
    private Integer questionnaireSubmitCount;
    
    @ApiModelProperty(value = "满意度评分")
    private BigDecimal satisfactionRate;
    
    @ApiModelProperty(value = "活跃用户数")
    private Integer activeUserCount;
    
    @ApiModelProperty(value = "票种销售明细")
    private List<TicketSalesDetail> ticketDetails;
    
    @ApiModelProperty(value = "销售转化率")
    private BigDecimal conversionRate;
    
    @ApiModelProperty(value = "平均客单价")
    private BigDecimal averageOrderValue;
    
    /**
     * 票种销售明细
     */
    @Data
    public static class TicketSalesDetail {
        @ApiModelProperty(value = "票种ID")
        private Long ticketId;
        
        @ApiModelProperty(value = "票种名称")
        private String ticketName;
        
        @ApiModelProperty(value = "票价")
        private BigDecimal price;
        
        @ApiModelProperty(value = "总数量")
        private Integer totalCount;
        
        @ApiModelProperty(value = "已售数量")
        private Integer soldCount;
        
        @ApiModelProperty(value = "销售额")
        private BigDecimal revenue;
    }
} 